//var 和 let 的区别
//越狱
// {
//     var a = 1;
//     let b = 2;
// }
// // var 声明的变量是全局变量，let 声明的变量是块级作用域,var会越狱
// console.log(a); //1
// console.log(b); //Uncaught ReferenceError: b is not defined

//重复声明
// var a = 1;
// var a = 2;
// console.log(a);//2
// let b = 1;
// let b = 2;
// console.log(b);//Uncaught SyntaxError: Identifier 'b' has already

//变量提升
// console.log(a);//undefined
// var a = 1;
//
// console.log(b);//Uncaught ReferenceError: Cannot access 'b'
// let b = 2;

//常量申明
// const a = 1;

//解构数组,对象,和函数时的使用
//解构数组
// let arr = [1, 2, 3];
// let [a, b, c] = arr;
// console.log(a, b, c);
// //解构对象
// let obj = {
//     name: 'zhangsan',
//     age: 18,
//     email: 'zhangsan@163.com'
// }
// let {name, age} = obj;
// console.log(name, age);
//
// //解构函数
// function fn({name, age}) {
//     console.log(name, age);
// }
//
// fn(obj);
//
// function f([a, , c]) {
//     console.log(a, c);
// }
//
// f(arr);


//链判断
// let obj1 = {
//     person: {
//         zhangsan: {
//             name: {
//                 firstName: "zhan"
//             }
//         },
//     }
// }
//
// let firstName = obj1?.person?.zhangsan?.name?.firstName;
//
// console.log(firstName);

//参数默认值
// function fn(a = 1, b = 2) {
//     return a+b;
// }
//
// console.log(fn(3,6));

//箭头函数
let fn = (a, b) => a+b
console.log(fn(1,2))
//模版字符串








